package UI.view;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.Dialog;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;

import UI.controller.DateFormaterTransformer;
import asiento.Asiento;

import usuario.Usuario;

public class ListadoAsientosWindow extends SimpleWindow {
	
	private String tipoDeListado;

	public ListadoAsientosWindow(WindowOwner owner, Usuario usuario, String tipoDeListado) {
		super(owner, usuario);
		this.setTipoDeListado(tipoDeListado);
	}

	@Override
	protected void createFormPanel(Panel mainPanel) {
		//TODO 06/10
	}
	
	@Override
	protected void createMainTemplate(Panel mainPanel) {
		
		this.setTitle("Aterrizar.com");
		new Label(mainPanel).setText(this.getTipoDeListado() + " de " + this.getModelObject());
		this.createResultsGrid(mainPanel);
		this.createActionsPanel(mainPanel);
	}

	private void createResultsGrid(Panel mainPanel) {
		Table<Asiento> table = new Table<Asiento>(mainPanel, Asiento.class);
		table.setHeigth(200);
		table.setWidth(600);

		table.bindItemsToProperty(this.getTipoDeListado());

		this.describeResultsGrid(table);
	}

	private void describeResultsGrid(Table<Asiento> table) {
		new Column<Asiento>(table) //
		.setTitle("Salida")
		.setFixedSize(100)
		.bindContentsToProperty("fechaSalida")
		.bindContentsToTransformer(new DateFormaterTransformer());

		new Column<Asiento>(table) //
		.setTitle("Aerolinea")
		.setFixedSize(100)
		.bindContentsToProperty("aerolinea");

		new Column<Asiento>(table)//
		.setTitle("Vuelo")
		.setFixedSize(100)
		.bindContentsToProperty("vuelo");
		
		new Column<Asiento>(table)//
		.setTitle("N° Asiento")
		.setFixedSize(100)
		.bindContentsToProperty("numeroAsiento");

		new Column<Asiento>(table)//
		.setTitle("Precio")
		.setFixedSize(100)
		.bindContentsToProperty("precio");
	
}

	public void setTipoDeListado(String tipoDeListado) {
		this.tipoDeListado = tipoDeListado;
	}

	public String getTipoDeListado() {
		return tipoDeListado;
	}


	@Override
	protected void addActions(Panel actionsPanel) {
		
		new Button(actionsPanel)//
		.setCaption("Cancelar")
		.onClick(new MessageSend(this, "close"));
		
	}




}
